from datetime import datetime, timedelta

# datetime是Python处理日期和时间的标准库。


# 获取当前日期和时间
# 我们先看如何获取当前日期和时间：
now = datetime.now()
print('获取当前日期。。。。 ' + str(now))
# 获取指定日期和时间
# 要指定某个日期和时间，我们直接用参数构造一个datetime：
dt = datetime(2017, 12, 30, 12, 52, 2)
print('获取指定日期和时间 ...... ' + str(dt))
# timestamp 时间戳【毫秒级  】
# 注意Python的timestamp是一个浮点数。如果有小数位，小数位表示毫秒数。
# 某些编程语言（如Java和JavaScript）的timestamp使用整数表示毫秒数，这种情况下只需要把timestamp除以1000就得到Python的浮点表示方法。
print('当前时间戳。。。相当于。。。' + str(now.timestamp()))
# timestamp转换为datetime
t = 1429417200.0
print('时间戳转化 ' + str(datetime.fromtimestamp(t)))
# str转换为datetime 格式化 [字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式]
# 很多时候，用户输入的日期和时间是字符串，要处理日期和时间 ，首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现，需要一个日期和时间的格式化字符串：
cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)
# datetime转换为str
# 如果已经有了datetime对象，要把它格式化为字符串显示给用户，就需要转换为str，转换方法是通过strftime()实现的，同样需要一个日期和时间的格式化字符串：
print(now.strftime('%a, %b %d %H:%M'))
# datetime加减
# 对日期和时间进行加减实际上就是把datetime往后或往前计算，得到新的datetime。加减可以直接用+和-运算符，不过需要导入timedelta这个类：
now2 = datetime.now()
print((now2 + timedelta(hours=5)).strftime('%Y-%m-%d %H:%M:%S'))
print((now2 - timedelta(minutes=40)).strftime('%Y-%m-%d %H:%M:%S'))
